#include<iostream>
using namespace std;
int main()
{
    int a[3000],v[3000][100],xq[3000][100],xj[3000],c[3000][3000];
    int az[3000],q[3000],t=0,i=0,l=0,num=0,n=0,m=0,vmax=0,ans=0,T;
    cin>>T;
    freopen("detect.in","r",stdin);
    freopen("detect.in","w",stdout);
    for(i=1;i<=T;i++)
    {
    cin>>n>>m>>l>>vmax;
    for(i=1;i<=300;i++)
    {
        q[i]=1;
        az[i]=0;
    }
    for(i=1;i<=n;i=i+1)
        cin>>xq[i][0]>>v[i][0]>>a[i];
    for(int i=1;i<=m;++i)
        cin>>xj[i];
    for(i=1;i<=n;i++)
    {
        t=0;
        while(v[i][t]>=0 && xq[i][t]<=l)
        {
            for(int x=1;x<=m;x++)
            {
                v[i][t+1]=v[i][t]+a[i];
                xq[i][t+1]=xq[i][t]+(v[i][t]+v[i][t+1])/2;
                if(xq[i][t]<xj[x] && xq[i][t+1]>=xj[x])
                {
                    if(2*a[i]*(xj[x]-xq[i][t])+v[i][t]*v[i][t]>vmax*vmax && q[i]!=0)
                    {
                        q[i]=0;
                        num++;
                       for(int k=1;k<=m;i++)
                       {
                            if(az[k]==1 && 2*a[i]*(xj[k]-xq[i][t])+v[i][t]*v[i][t]>vmax*vmax)
                                ans+=0;
                            else
                            {
                                az[x]=1;
                                break;
                            }
                       }
                    }
                }
            }
            t++;
        }
    }
    for(i=1;i<=m;i++)
        if(az[i]==1)
        {
            ans++;
            cout<<i<<endl;
        }
    cout<<ans<<endl;
    cout<<num<<endl<<n-ans;
    }
    return 0;
}
